package com.cskaoyan.javase.oop3._2inner._5anonymous._3exercise;

/**
 * 不修改main方法和接口Inter的前提下
 *      补齐Outer类代码，要求在控制台输出HelloWorld
 *
 *      Outer.method() 说明method方法是Outer类的静态成员方法,而且是无参的
 *      show()是接口Inter的抽象方法,它的实现是输出hello world
 *      Outer.method().show() 说明: Outer.method()方法的返回值是接口的实现类对象
 *
 *
 * @since 16:29
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Test {
    public static void main(String[] args) {
        Outer.method().show();
    }
}

class InterImpl implements Inter {
    @Override
    public void show() {
        System.out.println("hello world!");
    }
}

interface Inter {
    void show();
}

class Outer {
    public static Inter method() {
        // return new InterImpl();
        // 用局部内部类
        /*class InterImpl implements Inter {
            @Override
            public void show() {
                System.out.println("hello world!");
            }
        }
        return new InterImpl();*/
        // 用匿名内部类
        /*return new Inter() {
            @Override
            public void show() {
                System.out.println("hello world!");
            }
        };*/
        // 用Lambada表达式
        // Anonymous new Inter() can be replaced with lambda
        return () -> System.out.println("hello world!");
    }
}